package com.yourenbang.lingyun.transaction.web.domain.dto;

import com.alibaba.fastjson.annotation.JSONField;
import com.yourenbang.lingyun.core.util.json.ToJSON;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 刷卡交易
 */
@Data
public class PayTransactionPO implements Serializable, ToJSON {

    /** 初始 */
    public static final String STATUS_INIT = "0";
    /** 刷卡成功 */
    public static final String STATUS_SUCC = "1";
    /** 刷卡失败 */
    public static final String STATUS_FAIL = "2";
    /** 撤销成功 */
    public static final String STATUS_REVOKE = "3";
    /** 撤销中 */
    public static final String STATUS_REVOKE_ING = "4";
    /** 前端成功 */
    public static final String STATUS_APP_SUCC = "5";

    /** 产品类型 01:刷卡 */
    public static final String PRODUCTTYPE_SWIPING = "01";
    /** 产品类型 02:缴纳196 */
    public static final String PRODUCTTYPE_DEPOSIT = "02";
    /** 产品类型 03:扫码 */
    public static final String PRODUCTTYPE_QRCODE = "03";
	/** 产品类型 04:银联扫码,被扫 */
	public static final String PRODUCTTYPE_LYUNION_CODE = "04";
    /** 产品类型 05:电签 */
    public static final String PRODUCTTYPE_EPOS= "05";
    /** 产品类型 06:充值 */
    public static final String producttype_topUpPay = "06";
    /** 产品类型 08:电签P30 */
    public static final String PRODUCTTYPE_EPOS_P30 = "08";
    /** 产品类型 09:电签P35 */
    public static final String PRODUCTTYPE_P35 = "09";
    /** 产品类型 10:电签K40 */
    public static final String PRODUCTTYPE_EPOS_K40 = "12";

    /** 卡类型 C:贷记卡 */
    public static final String CARDFLAG_C = "C";
    /** 卡类型 D:借记卡 */
    public static final String CARDFLAG_D = "D";
    /** 卡类型 WECHAT:微信 */
    public static final String CARDFLAG_WECHAT = "WECHAT";
    /** 卡类型 ALIPAY:支付宝 */
    public static final String CARDFLAG_ALIPAY = "ALIPAY";
    /** 卡类型 82:银联二维码贷记 */
    public static final String CARDFLAG_82 = "82";

    private String id;

    private String orderNo;                 //订单号

    private String transactionNo;           //拉卡拉流水号

    private String userId;                  //用户id

    private String payMerId;                //通道商户id

    private String productType;             //产品类型 01:刷卡 02:缴纳196 03:扫码 04:闪付

    private String merNo;                   //拉卡拉商户号

    private String merName;                 //商户名称

    private Integer rate;                    //费率 例（55）万分

    private BigDecimal transAmt;            //交易金额

    private BigDecimal transFee;            //手续费(包含D0手续费)

    private String cardFlag;                //卡类型   C:贷记卡 D:借记卡 WECHAT:微信  ALIPAY:支付宝

    private String termId;                  //终端号

    private String sid;                     //拉卡拉流水号

    private String revokeSid;               //撤销流水号

    private String transCardNo;             //交易卡号

    private String transBank;               //交易卡银行

    private String transCardType;           //交易卡类型

    private String settlementCardNo;        //结算卡号

    private String settlementBank;          //结算卡银行

    private String settlementCardType;      //结算卡类型

    private String status;                  //状态 0：初始 1：刷卡成功2：刷卡失败 3：撤销成功 4：撤销中

    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime transTime;        //交易时间

    private String transMonth;              //交易年月（yyyyMM）

    private String transDay;                //交易日（dd）

    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    private Integer version;

    private String remarks;

    private String provinceCode;            //拉卡拉省编号

    private String cityCode;                //拉卡拉市编号

    private String districtCode;            //拉卡拉区、县编号

    private String areaCode;                //银联区域编号

    private String sysRef;                  //系统参考号

    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime appSuccTime;

    private String transType;               //交易类型

}
